<template>
  <shopCart
    :list="list"
    :isChecked="isChecked"
    @checkAll="checkAll"
    @del="del"
    :totalPrice="totalPrice"
    @changeIsSelected="changeIsSelected"
    @delCheck="delCheck"
    @addCount="addCount"
    @redCount="redCount"
    :shopCounts="shopCounts"
    :discount="discount"
    :total="total"
    :hide="hide"
  ></shopCart>
</template>

<script>
import shopCart from '@/components/shopCart.vue';
export default {
  components: {
    shopCart,
  },
  data() {
    return {
      list: [
        {
          name: '凌美Lamy Safari钢笔/签字笔T52黑色墨水<',
          id: 0,
          oldPrice: 158.0,
          price: 129.0,
          count: 0,
          img: 'https://img-blog.csdnimg.cn/20200520143727974.jpg',
          isSelected: true,
        },
        {
          name: '凌美Lamy Safari钢笔/签字笔T52黑色墨水<',
          id: 1,
          oldPrice: 158.0,
          price: 145.0,
          count: 0,
          img: 'https://img-blog.csdnimg.cn/20200520143752215.jpg',
          isSelected: false,
        },
        {
          name: '德国进口 凌美(LAMY)签字笔钢笔墨水水笔专用一次性墨水胆笔芯5支一盒T10德国进口',
          id: 2,
          oldPrice: 158.0,
          price: 130.0,
          count: 0,
          img: 'https://img-blog.csdnimg.cn/20200520143746317.jpg',
          isSelected: true,
        },
      ],
    };
  },
  methods: {
    del(id) {
      console.log(id);
      this.list = this.list.filter((item) => item.id !== id);
    },
    checkAll(flag) {
      this.list.forEach((item) => (item.isSelected = flag));
    },
    changeIsSelected(id,flag1){
      console.log(id);
      console.log(flag1);
      this.list.filter((item) => item.id === id).forEach(item=>item.isSelected=flag1)
    },
    delCheck(){
      this.list=this.list.filter(item=>!item.isSelected)
    },
    addCount(id){
      const res=this.list.filter((item) => item.id === id)
      console.log(res[0].isSelected);
      res.forEach(item=>{
        if(item.isSelected){
        if(item.count<0){
          return        
        }else{
          item.count+=1
        }
        }
    
      })
      
    },
    redCount(id){
      const res=this.list.filter((item) => item.id === id)
   
      res.forEach(item=>{
        if(item.isSelected){
           if(item.count<=0){
          return        
        }else{
          item.count-=1
        }

        }
      
       
      })
    }
  },
  computed: {
    totalPrice() {
      return this.list
        .filter((item) => item.isSelected)
        .reduce((prev, item) => prev + item.price*item.count, 0).toFixed(2);
    },
    isChecked() {
      return this.list.every((item) => item.isSelected);
    },
    shopCounts(){
      return this.list.filter(item=> item.isSelected).reduce((prev,item)=> prev+item.count,0)
    },
    discount(){
      return this.list.filter(item=> item.isSelected).reduce((prev,item)=> prev+(item.oldPrice-item.price)*item.count,0).toFixed(2)
    },
    total(){
      return this.totalPrice-this.discount
    },
    hide(){
      return this.list.length
    }
  
},
}
</script>

<style>
/* 公共样式 */
.clearfix {
  content: '';
  display: block;
  clear: both;
}

.red {
  color: #f30213;
}

.fl {
  float: left;
}

.fr {
  float: right;
}

/* 清除默认样式 */
* {
  margin: 0px;
  padding: 0px;
  font-size: 14px;
}

a {
  text-decoration: none;
  color: #333;
}

input {
  outline: none;
}

.wrap {
  width: 1180px;
  margin: 0 auto;
}

.wrap .location {
  padding: 10px 0;
  border-bottom: 1px solid #ccc;
  margin-bottom: 20px;
}

.cartTable {
  border: 1px solid #ccc;
}

.cartTable tr.title {
  background-color: rgb(241, 243, 244);
  font-weight: bold;
}

.cartTable tbody tr td {
  /* border: 1px solid rgb(245, 245, 245); */
  padding: 10px;
}

/* 原价 */
.cartTable tbody tr td .tdl {
  text-decoration: line-through;
  color: #999;
}

/* 商品数量 */
.cartTable tr .amount .unum {
  width: 70px;
  height: 30px;
  box-sizing: border-box;
  text-align: center;
  font-size: 16px;
  float: left;
}

/* 数量加减按钮 */
.cartTable tr .amount a {
  display: block;
  width: 30px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  font-size: 18px;
  border: 1px solid #ccc;
  box-sizing: border-box;
}

.cartTable tr .amount a.Increase {
  border-right: none;
  float: left;
}

.cartTable tr .amount a.Reduce {
  border-left: none;
  float: left;
}

.cartTable tr.count .jiesuan .right {
  text-align: right;
}

.cartTable tr.count .jiesuan .right p {
  margin: 5px 0;
}

.cartTable tr.count .jiesuan .right .pay {
  display: block;
  width: 160px;
  height: 50px;
  line-height: 50px;
  background-color: #f30213;
  color: #fff;
  font-weight: bold;
  text-align: center;
  font-size: 20px;
}
</style>
